Role-based এবং Claim-based Authorization

Web Development - এএসপি ডট (ASP.Net) - Authentication এবং Authorization |

ASP.Net অ্যাপ্লিকেশনগুলোতে Authorization একটি গুরুত্বপূর্ণ নিরাপত্তা ব্যবস্থা, যা ব্যবহারকারীর অ্যাক্সেসের অনুমতি নির্ধারণ করে। Role-based এবং Claim-based Authorization হল দুটি প্রধান পদ্ধতি, যা ASP.Net অ্যাপ্লিকেশনগুলোতে ইউজারদের অনুমতি ব্যবস্থাপনা করতে ব্যবহৃত হয়। এখানে, এই দুটি Authorization পদ্ধতি বিস্তারিতভাবে ব্যাখ্যা করা হলো।


১. Role-based Authorization

Role-based Authorization ব্যবহার করে আপনি ব্যবহারকারীদের নির্দিষ্ট roles এর ভিত্তিতে অ্যাপ্লিকেশনের বিভিন্ন অংশে অ্যাক্সেস প্রদান করতে পারেন। একটি রোল হলো একটি গ্রুপ বা ক্যাটাগরি, যার মধ্যে এক বা একাধিক ব্যবহারকারী থাকতে পারে। একটি ব্যবহারকারী এক বা একাধিক রোলের সদস্য হতে পারে, এবং সেই অনুযায়ী অ্যাপ্লিকেশনের নির্দিষ্ট অংশে তার অ্যাক্সেস নির্ধারণ করা হয়।

Role-based Authorization এর প্রক্রিয়া:

  1. Roles ডিফাইন করা: প্রথমে আপনি একটি বা একাধিক রোল ডিফাইন করেন।
  2. Role-based Authorization: এরপর কন্ট্রোলার বা অ্যাকশন মেথডে Authorize অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট রোলের জন্য অ্যাক্সেস অনুমোদন করা হয়।

Role-based Authorization উদাহরণ

  1. রোল ডিফাইন করা

ধরা যাক, আপনি দুটি রোল Admin এবং User ডিফাইন করতে চান। এই রোলগুলো ব্যবহারকারীকে অ্যাপ্লিকেশনের বিভিন্ন অংশে অ্যাক্সেস দেয়।

  1. Authorization Attribute ব্যবহার করা

[Authorize] অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট রোলের ব্যবহারকারীদের অ্যাক্সেস প্রদান করা হয়।

[Authorize(Roles = "Admin")]
public IActionResult AdminDashboard()
{
    return View();
}

এখানে, কেবলমাত্র Admin রোলের ব্যবহারকারীরা AdminDashboard অ্যাকশন মেথডে অ্যাক্সেস পাবে। অন্যথায়, ব্যবহারকারীকে Unauthorized (401) অ্যাক্সেস রেসপন্স প্রদান করা হবে।


২. Claim-based Authorization

Claim-based Authorization আরও বিস্তারিত ও নমনীয় একটি পদ্ধতি, যেখানে claims ব্যবহারকারীর তথ্যের উপর ভিত্তি করে অ্যাক্সেস নির্ধারণ করা হয়। একটি claim হলো একটি বিবরণী বা একক টুকরো ডেটা (যেমন, নাম, ইমেইল, বয়স, অধিকার ইত্যাদি), যা ব্যবহারকারী সম্পর্কিত। Claim-based Authorization আপনাকে নির্দিষ্ট claim এর ভিত্তিতে অ্যাক্সেস কন্ট্রোল করতে সাহায্য করে।

Claim-based Authorization এর প্রক্রিয়া:

  1. Claim তৈরি করা: প্রথমে ব্যবহারকারীকে একটি বা একাধিক claim অ্যাসাইন করা হয়।
  2. Claim অনুযায়ী Authorization: এরপর Authorize অ্যাট্রিবিউটের মাধ্যমে ক্লেইম অনুযায়ী অ্যাক্সেস কন্ট্রোল করা হয়।

Claim-based Authorization উদাহরণ

  1. Claim তৈরি করা

ধরা যাক, আপনি একটি claim তৈরি করতে চান যেখানে ব্যবহারকারীর রোল বা অধিকার সম্পর্কে তথ্য থাকবে। উদাহরণস্বরূপ, আপনি একটি claim তৈরি করতে পারেন যা বলে "HasAdminRights"।

  1. Claim ব্যবহার করে Authorization
[Authorize(Policy = "HasAdminRights")]
public IActionResult AdminArea()
{
    return View();
}

এখানে, Policy দ্বারা আপনি নির্দিষ্ট claim ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। "HasAdminRights" নামের ক্লেইমটি ব্যবহারকারীর কাছে থাকা উচিত।


৩. Role-based এবং Claim-based Authorization এর মধ্যে পার্থক্য

বৈশিষ্ট্যRole-based AuthorizationClaim-based Authorization
কিভাবে কাজ করেব্যবহারকারীর রোলের উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ।ব্যবহারকারীর claims (যেমন, ইমেইল, অ্যাকাউন্ট টিপ, অধিকার) এর উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ।
লচিলতাকম নমনীয়তা, কেবল রোল ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ।অধিক নমনীয়তা, claims এর উপর ভিত্তি করে আরও বিস্তারিত নিয়ন্ত্রণ।
ব্যবহারসাধারণত বড় এবং সাধারণ অ্যাপ্লিকেশনগুলোর জন্য যেখানে রোল ভিত্তিক অধিকার প্রয়োজন।যেসব অ্যাপ্লিকেশনে ব্যবহারকারীর বিভিন্ন দিকের উপর ভিত্তি করে অ্যাক্সেস নিয়ন্ত্রণ করা প্রয়োজন।
সুবিধাসহজ এবং দ্রুত প্রয়োগযোগ্য।অধিক কার্যকর এবং উন্নত কাস্টমাইজেশন সক্ষম।
নিরাপত্তাকম নিরাপত্তা, কারণ রোলের মধ্যে খুব কম ডেটা থাকে।অধিক নিরাপত্তা, কারণ claims এ অনেক বিশদ তথ্য থাকতে পারে।

৪. Policy-based Authorization

ASP.Net Core এ Policy-based Authorization ব্যবহার করে, আপনি একটি নির্দিষ্ট authorization policy ডিফাইন করতে পারেন, যা একটি বা একাধিক claims এর উপর ভিত্তি করে কাজ করবে। এটি claim-based Authorization এর উন্নত একটি রূপ।

উদাহরণ:

  1. Policy তৈরি করা

Startup.cs ফাইলে একটি নতুন পলিসি তৈরি করা যায়:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("HasAdminRights", policy =>
            policy.RequireClaim("Admin", "true"));
    });
}

এখানে, একটি পলিসি তৈরি করা হয়েছে যা নিশ্চিত করে যে ব্যবহারকারীর Admin নামক claim এর মান "true" হতে হবে।

  1. Policy ব্যবহার করা
[Authorize(Policy = "HasAdminRights")]
public IActionResult AdminDashboard()
{
    return View();
}

এখানে, পলিসি অনুসারে ব্যবহারকারীকে Admin ক্লেইম থাকতে হবে যাতে তারা AdminDashboard অ্যাক্সেস করতে পারে।


সারাংশ

  • Role-based Authorization সিম্পল এবং সহজ, যেখানে আপনি ব্যবহারকারীকে একটি নির্দিষ্ট রোলের ভিত্তিতে অ্যাক্সেস প্রদান করেন।
  • Claim-based Authorization অধিক নমনীয় এবং নির্দিষ্ট ডেটা যেমন, ব্যবহারকারীর অধিকার বা অবস্থান অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ করতে পারে।
  • Policy-based Authorization আরও উন্নত এবং এটি ক্লেইমগুলির উপর ভিত্তি করে পলিসি তৈরি করার মাধ্যমে অ্যাক্সেস নিয়ন্ত্রণের জন্য ব্যবহৃত হয়।

এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা এবং ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণের জন্য অত্যন্ত গুরুত্বপূর্ণ দুটি পদ্ধতি।

Content added By
Promotion